{"cells":[{"cell_type":"markdown","metadata":{"id":"8vKvnJnvXfQc"},"source":["# Personality Facets Classification"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"elapsed":5341,"status":"ok","timestamp":1743154024426,"user":{"displayName":"Lukas","userId":"09276477477582089903"},"user_tz":-60},"id":"oT4INFnyRdK5","outputId":"cebdafb0-b7be-4297-abd8-243cb472ad7f"},"outputs":[{"output_type":"stream","name":"stdout","text":["Requirement already satisfied: transformers in /usr/local/lib/python3.11/dist-packages (4.50.0)\n","Collecting datasets\n","  Downloading datasets-3.5.0-py3-none-any.whl.metadata (19 kB)\n","Collecting evaluate\n","  Downloading evaluate-0.4.3-py3-none-any.whl.metadata (9.2 kB)\n","Requirement already satisfied: openai in /usr/local/lib/python3.11/dist-packages (1.68.2)\n","Requirement already satisfied: filelock in /usr/local/lib/python3.11/dist-packages (from transformers) (3.18.0)\n","Requirement already satisfied: huggingface-hub<1.0,>=0.26.0 in /usr/local/lib/python3.11/dist-packages (from transformers) (0.29.3)\n","Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.11/dist-packages (from transformers) (2.0.2)\n","Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.11/dist-packages (from transformers) (24.2)\n","Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.11/dist-packages (from transformers) (6.0.2)\n","Requirement already satisfied: regex!=2019.12.17 in /usr/local/lib/python3.11/dist-packages (from transformers) (2024.11.6)\n","Requirement already satisfied: requests in /usr/local/lib/python3.11/dist-packages (from transformers) (2.32.3)\n","Requirement already satisfied: tokenizers<0.22,>=0.21 in /usr/local/lib/python3.11/dist-packages (from transformers) (0.21.1)\n","Requirement already satisfied: safetensors>=0.4.3 in /usr/local/lib/python3.11/dist-packages (from transformers) (0.5.3)\n","Requirement already satisfied: tqdm>=4.27 in /usr/local/lib/python3.11/dist-packages (from transformers) (4.67.1)\n","Requirement already satisfied: pyarrow>=15.0.0 in /usr/local/lib/python3.11/dist-packages (from datasets) (18.1.0)\n","Collecting dill<0.3.9,>=0.3.0 (from datasets)\n","  Downloading dill-0.3.8-py3-none-any.whl.metadata (10 kB)\n","Requirement already satisfied: pandas in /usr/local/lib/python3.11/dist-packages (from datasets) (2.2.2)\n","Collecting xxhash (from datasets)\n","  Downloading xxhash-3.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (12 kB)\n","Collecting multiprocess<0.70.17 (from datasets)\n","  Downloading multiprocess-0.70.16-py311-none-any.whl.metadata (7.2 kB)\n","Collecting fsspec<=2024.12.0,>=2023.1.0 (from fsspec[http]<=2024.12.0,>=2023.1.0->datasets)\n","  Downloading fsspec-2024.12.0-py3-none-any.whl.metadata (11 kB)\n","Requirement already satisfied: aiohttp in /usr/local/lib/python3.11/dist-packages (from datasets) (3.11.14)\n","Requirement already satisfied: anyio<5,>=3.5.0 in /usr/local/lib/python3.11/dist-packages (from openai) (4.9.0)\n","Requirement already satisfied: distro<2,>=1.7.0 in /usr/local/lib/python3.11/dist-packages (from openai) (1.9.0)\n","Requirement already satisfied: httpx<1,>=0.23.0 in /usr/local/lib/python3.11/dist-packages (from openai) (0.28.1)\n","Requirement already satisfied: jiter<1,>=0.4.0 in /usr/local/lib/python3.11/dist-packages (from openai) (0.9.0)\n","Requirement already satisfied: pydantic<3,>=1.9.0 in /usr/local/lib/python3.11/dist-packages (from openai) (2.10.6)\n","Requirement already satisfied: sniffio in /usr/local/lib/python3.11/dist-packages (from openai) (1.3.1)\n","Requirement already satisfied: typing-extensions<5,>=4.11 in /usr/local/lib/python3.11/dist-packages (from openai) (4.12.2)\n","Requirement already satisfied: idna>=2.8 in /usr/local/lib/python3.11/dist-packages (from anyio<5,>=3.5.0->openai) (3.10)\n","Requirement already satisfied: aiohappyeyeballs>=2.3.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp->datasets) (2.6.1)\n","Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.11/dist-packages (from aiohttp->datasets) (1.3.2)\n","Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp->datasets) (25.3.0)\n","Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.11/dist-packages (from aiohttp->datasets) (1.5.0)\n","Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.11/dist-packages (from aiohttp->datasets) (6.2.0)\n","Requirement already satisfied: propcache>=0.2.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp->datasets) (0.3.0)\n","Requirement already satisfied: yarl<2.0,>=1.17.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp->datasets) (1.18.3)\n","Requirement already satisfied: certifi in /usr/local/lib/python3.11/dist-packages (from httpx<1,>=0.23.0->openai) (2025.1.31)\n","Requirement already satisfied: httpcore==1.* in /usr/local/lib/python3.11/dist-packages (from httpx<1,>=0.23.0->openai) (1.0.7)\n","Requirement already satisfied: h11<0.15,>=0.13 in /usr/local/lib/python3.11/dist-packages (from httpcore==1.*->httpx<1,>=0.23.0->openai) (0.14.0)\n","Requirement already satisfied: annotated-types>=0.6.0 in /usr/local/lib/python3.11/dist-packages (from pydantic<3,>=1.9.0->openai) (0.7.0)\n","Requirement already satisfied: pydantic-core==2.27.2 in /usr/local/lib/python3.11/dist-packages (from pydantic<3,>=1.9.0->openai) (2.27.2)\n","Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.11/dist-packages (from requests->transformers) (3.4.1)\n","Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.11/dist-packages (from requests->transformers) (2.3.0)\n","Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.11/dist-packages (from pandas->datasets) (2.8.2)\n","Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.11/dist-packages (from pandas->datasets) (2025.1)\n","Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.11/dist-packages (from pandas->datasets) (2025.1)\n","Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.11/dist-packages (from python-dateutil>=2.8.2->pandas->datasets) (1.17.0)\n","Downloading datasets-3.5.0-py3-none-any.whl (491 kB)\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m491.2/491.2 kB\u001b[0m \u001b[31m8.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hDownloading evaluate-0.4.3-py3-none-any.whl (84 kB)\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m84.0/84.0 kB\u001b[0m \u001b[31m6.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hDownloading dill-0.3.8-py3-none-any.whl (116 kB)\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m116.3/116.3 kB\u001b[0m \u001b[31m11.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hDownloading fsspec-2024.12.0-py3-none-any.whl (183 kB)\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m183.9/183.9 kB\u001b[0m \u001b[31m16.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hDownloading multiprocess-0.70.16-py311-none-any.whl (143 kB)\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m143.5/143.5 kB\u001b[0m \u001b[31m12.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hDownloading xxhash-3.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (194 kB)\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m194.8/194.8 kB\u001b[0m \u001b[31m15.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hInstalling collected packages: xxhash, fsspec, dill, multiprocess, datasets, evaluate\n","  Attempting uninstall: fsspec\n","    Found existing installation: fsspec 2025.3.0\n","    Uninstalling fsspec-2025.3.0:\n","      Successfully uninstalled fsspec-2025.3.0\n","\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n","torch 2.6.0+cu124 requires nvidia-cublas-cu12==12.4.5.8; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cublas-cu12 12.5.3.2 which is incompatible.\n","torch 2.6.0+cu124 requires nvidia-cuda-cupti-cu12==12.4.127; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cuda-cupti-cu12 12.5.82 which is incompatible.\n","torch 2.6.0+cu124 requires nvidia-cuda-nvrtc-cu12==12.4.127; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cuda-nvrtc-cu12 12.5.82 which is incompatible.\n","torch 2.6.0+cu124 requires nvidia-cuda-runtime-cu12==12.4.127; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cuda-runtime-cu12 12.5.82 which is incompatible.\n","torch 2.6.0+cu124 requires nvidia-cudnn-cu12==9.1.0.70; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cudnn-cu12 9.3.0.75 which is incompatible.\n","torch 2.6.0+cu124 requires nvidia-cufft-cu12==11.2.1.3; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cufft-cu12 11.2.3.61 which is incompatible.\n","torch 2.6.0+cu124 requires nvidia-curand-cu12==10.3.5.147; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-curand-cu12 10.3.6.82 which is incompatible.\n","torch 2.6.0+cu124 requires nvidia-cusolver-cu12==11.6.1.9; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cusolver-cu12 11.6.3.83 which is incompatible.\n","torch 2.6.0+cu124 requires nvidia-cusparse-cu12==12.3.1.170; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cusparse-cu12 12.5.1.3 which is incompatible.\n","torch 2.6.0+cu124 requires nvidia-nvjitlink-cu12==12.4.127; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-nvjitlink-cu12 12.5.82 which is incompatible.\n","gcsfs 2025.3.0 requires fsspec==2025.3.0, but you have fsspec 2024.12.0 which is incompatible.\u001b[0m\u001b[31m\n","\u001b[0mSuccessfully installed datasets-3.5.0 dill-0.3.8 evaluate-0.4.3 fsspec-2024.12.0 multiprocess-0.70.16 xxhash-3.5.0\n"]}],"source":["!pip install transformers datasets evaluate openai"]},{"cell_type":"markdown","metadata":{"id":"IxR36QBtPLrT"},"source":["## RoBERTa"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":775},"executionInfo":{"elapsed":24093,"status":"ok","timestamp":1743154085591,"user":{"displayName":"Lukas","userId":"09276477477582089903"},"user_tz":-60},"id":"vjT3EmOkPLri","outputId":"0754fc1f-0e57-4424-eff5-47a152076bd5"},"outputs":[{"output_type":"stream","name":"stdout","text":["Mounted at /content/drive\n","labels\n","none    1000\n","emp      700\n","dur      700\n","Name: count, dtype: int64\n"]},{"output_type":"display_data","data":{"text/plain":["<Figure size 1000x600 with 1 Axes>"],"image/png":"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Dh8+7NDnEO+9996ze/7yyy/bPtP/KmG9UVFRunr1ql588UVJSvT/laQOHTrYPf/ggw8k3e/AQJK+//57Wa1WNWzY0O47Exoaqnz58tn9Tx2RJUsWvf7667bn/v7+atGihXbv3q2LFy9Kun+0zMvLS3PnzrW1W716ta5evZos17bFH7W8deuWJMnT09N2DWNcXJyuXbsmX19fFShQ4IGf3YMk/Pzv3Lmjq1evqly5cjLG2E5vTZcunTw8PLRhwwbduHHjgfNZs2aNbt68qcaNG9t97q6uripTpkySP3cATz9O7QOQKrzwwgv/2NnE33v0O3bsmKT7AethwsPDFR0drbt37ypfvnyJxhcoUMC2keuIK1eu6ObNm5o6daqmTp36wDaXL1+2e54wxElS+vTpJcm28XfixAlJ/95TYbVq1ZQ5c2bNnTtXVatWldVq1fz581W3bl35+fn9Y82RkZEqUKBAonGFChWS1WrVmTNnVKRIkX98/YfJly+fXnnllX9sc/DgQX3yySdat25dotAWHh4u6dE/B0ny8vJScHCw3bD06dM/dIPaUdevX9fAgQO1YMGCRP/P+HoT+vt3LG/evHJxcbFdq3Ps2DEZYx74XZQkd3f3JNX5zDPPJAqZ+fPnl3T/ur/Q0FAFBgaqTp06mjdvngYPHizpfgDPmjWrqlSpkqTXTej27duSZPsOWq1WffHFF5o4caJOnjxpd91ahgwZHmmeYWFh6tevn3744YdE/9P4z9/T01OfffaZunfvrpCQEL344ot67bXX1KJFC4WGhkr6v3XFw96nv7+/A+8UQGpCkAKQJiTcOy3d31CTpJEjRz6022RfX19FR0c/8ms87MLyv3deEP/azZo1e2iQK168uN1zV1fXB7YzxjxyffHzadKkib766itNnDhRmzZt0vnz51N8j3k3b95UxYoV5e/vr0GDBilv3rzy8vLSrl271Lt3b9tn6oiHfabJpWHDhtq8ebN69uypEiVKyNfXV1arVTVr1nykev/+fbJarbJYLFq5cuUDa3/cNxhu0aKFFi1apM2bN6tYsWL64Ycf1L59+2Tp/fLAgQPKlCmTLZR8+umn6tu3r95++20NHjxYQUFBcnFxUZcuXR7ps4uLi1O1atV0/fp19e7dWwULFpSPj4/OnTunVq1a2c2jS5cuqlOnjpYuXarVq1erb9++GjZs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CgAAAAAcRJACAAD4m6NHjzq7BAApHEEKcNDOnTslSXR4CST22Wef6ddff3V2GcB/MnjwYDVr1kxbt251dilAivTNN98oOjra2WU4HUEKcMCUKVP0/PPP68cff5TFYiFMAQmcPHlSw4YN09ixY9kAxVOtQIECypAhgwYPHqzNmzc7uxwgRdm+fbvatm2r3r176969e84ux6kIUoADKlWqpHfffVfNmzfX8uXLCVPA/2eMUe7cubVhwwYdOnRII0eO1KZNm5xdFpAkDRs2VKdOneTl5aWhQ4dqx44dzi4JSDGef/55/fDDD5o6daq6d++uqKgoZ5fkNAQpwAEFChTQJ598orffflvNmzfXunXrCFOAJKvVKkkqUaKEJk2apF27dmnChAnatm2bkysDHl3891iS0qVLp6CgIG3btk0fffQRYQqQFBcXJ0l67bXXtGjRIk2aNEmffvqp7t696+TKnIMgBTyChD+ua9eulZubmyIiIlSvXj2tWrWKMIU0zRgjV1dXSVKfPn303XffyRijb7/9Vv369dMff/zh5AqBR+Picn+zqGvXrmrbtq38/f1VvXp17d+/X3379uWUVaRpCdf1Q4YM0W+//SY/Pz8NGTJEH3/8cZq8Zspi2PoDHlnv3r01Z84cffzxx7p48aI2btyovXv3au7cuXr11VdljJHFYnF2mYBTjB8/Xv369dPKlSvl5+eny5cvq0mTJipVqpT69eunF154wdklAv/qjz/+UP369TV//ny9/PLLkqSFCxdq0qRJ8vT01KeffqqSJUs6uUrAeYYOHarPP/9cc+bMUUxMjI4cOaKPP/5Y7733nkaMGCFPT09nl/jEuDm7AOBpERYWphUrVmjcuHFq0KCBJOngwYMaNWqUmjRpou+++07VqlUjTCHN2rVrl2rXrq0XX3xRklSkSBH9+OOPqlq1qgYOHKi+ffvaxgEplaurqyIjI+Xu7m4b1rBhQ927d09t27bVxx9/rD59+qhChQpOrBJwjpiYGP3+++9q3769atasKUmqU6eOcuTIoaZNm8rLy0v9+/eXt7e3kyt9Mji1D3hEcXFxOnnypN1pfkWKFNEHH3ygoKAgvfnmm1qyZAkhCmlOXFycjDGKiYmxXXQcFxene/fuqWTJkhowYIDWrVun/v37a//+/U6uFvg/CU/Kif/bw8NDGTNm1MmTJ+2GN2vW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uXLl0tChQ7Vz505bm7t37ypnzpwKCAh44rUiMU7tQ4pz7949zZo1S++//77ee+89NWzYUIGBgerdu7euX7+uzZs301sTUrWEFwpPnTpVBw4cULZs2VSzZk0VL15cV65c0QcffKAdO3aoWLFiKlGihPbu3auDBw/q4MGDHKHFU+Po0aMaO3asJk+erMyZM6tmzZo6c+aMfvzxR7m7u9M7H1K1hOv6xYsX66+//tLzzz+v/PnzK0uWLLp69apKliwpb29vNWvWTPny5dPcuXN14sQJ7du3jyNQKQBBCilS/DVTXbp00Z07d9S1a1edPHlS3377LT+uSNUSfrc/+ugjffXVVypRooSuXr0qY4y++OILVaxYUVevXlX37t21cOFCPf/883rjjTfUvn17Ol7BU+fEiRMaP368Zs6cqZEjR6pNmzayWCxc+4pULWGI6t27t77++muFhITo5s2bqlevnt577z0VL15cV69eVfny5XX06FE1adJEmTNn1rBhw1jXpxBsieKJOXHixCO3dXd3V7NmzTR58mRJUv78+fX999/L3d1dsbGxhCikWvHf7aNHjyoiIkKrVq3SmjVrNHHiRBUqVEitW7fWxo0blTFjRo0ZM0YVKlRQ2bJl9cEHH/DDihQh4alKj7KvNm/evGrTpo0GDBig1q1b2262S4hCahYforZv366DBw9q5cqV+vPPPzVgwADt3btXo0aN0t69e5UxY0Zt2bJF3t7eypQpk0aOHMm6PgXhiBSeiKFDh6pv3776448/VLp06UeeLioqSmvWrFGtWrX4UUWa8d1336l79+4KDg7Wjz/+qJCQEEnSzp07NXLkSO3YsUPffPONKlasqBs3biggIEAuLi7cOwQpSkxMjG3nlyPrb844QFoxZ84cLVu2TC4uLpo3b54tGE2fPl1ff/21nnnmGXXv3l3FixfXzZs35efnZ7tmlnV9ysCaCk9E165dVbt2bb3++uvasWPHI0/n5eWlOnXqyM3NTVar9ZH2bgJPm/g9+Am/34UKFdLRo0d1/fp127BSpUqpZ8+eKlOmjGrXrq3du3crffr0cnFxkdVq5YcVTpXwSNTChQtVsGBB3blzR25uboqNjX3odPG9T0rSzZs3CVFItf6+rj9w4IB+/fVX7d69W5cuXbK1a926tdq2bauTJ0/q448/1vHjxxUYGGjrxZV1fcrB2gqPXWxsrLy9vbV06VKVLl1ab7zxhl0PNA+T8Ef59OnTcnFxYeWBVCl+w3Hjxo2SpDfeeENdu3ZViRIl1Lx5cx08eNDWtlSpUvrggw/Uo0cPFS9ePNE8AGdIeBRp2bJl2rNnj06ePKk6der8Y5gyxtj2wk+ZMkWffvqpbt++/URrB56U+GVkz549kqThw4frww8/lDFGI0aM0JkzZ2xtW7VqpbfeektZs2ZVnjx5bMM5nS9l4ZcXj5XVarWd0rFw4UJVq1ZNYWFhat68+T8emTLG2FY4U6ZM0bvvvquLFy8+kZoBZ9i9e7eqVKmiXr16SZJq1Kih3r17K1OmTHrnnXf0559/2tq++OKLGjhwoG3vJOBs8evrHj16qFevXnJzc1P9+vV15MgRVapUSbdv304Upv7eO2WnTp1UpkwZ+fr6OuU9AE/CypUrVb9+fdvtK7p27apWrVrp119/1RdffKGzZ8/a2nbo0EGTJk2ynXWAlIcghccq/se1T58+6tatm4wx6tGjh3x8fFSvXr0Hhqm//7jG32skNDT0idYOPEn58+fXl19+qfHjx6tPnz6SpFdffVXt27dXUFCQ2rVrp3379iWajr2TSCm2b9+uefPmadKkSRo0aJC+++47TZkyRbGxsapatartyFRcXJzden7KlCnq2bOn5s+frwYNGjj5XQCPV/bs2VW1alXNmDHD1qHWxx9/rAYNGmj9+vUaN26cTp8+bWsf3/kKZx2kUAZ4zE6dOmVy5sxpvv32W9uwS5cumWrVqpns2bObHTt22IbHxcXZ/p48ebLx9/c3ixcvfqL1As5y584dM2nSJOPm5mY+/PBD2/AVK1aYF154wbRr186J1QH/bPXq1cbPz8+cPHnSNiw6OtrMmzfPeHh4mMqVK5vbt28bY4yJiYkxxtxfzwcEBJjvvvvOGSUDj5XVan3g8EOHDpl27dqZkiVLmkmTJtmGDx061GTNmtV8+eWXT6pE/EcEKTx2R44cMenTpzdbt241xvxfWPrrr79MtmzZTMmSJc3mzZvtppk0aZIJDAzkxxWp2siRI83IkSPtht2+fdtMmjTJWCwWM2DAANvwTZs22e1oAJzpQRuIYWFhpnDhwmbChAl2w69du2aKFi1qMmfObCpUqGAiIyONMcZMnDjR+Pv7s55HqjdnzhyzaNEiu2F//vmnadeunSlatKiZPn26bfiMGTNMbGzsE64QScVxQiQr84Be9fLnz6/s2bPbDmHHH57OlCmTnnnmGR04cEDDhw+3tV+0aJF69Oihr776itM8kGrduXNHly5dUt++fW3nykuSj4+PmjZtqgYNGmjgwIHq2rWrJKlcuXKcJ48UIWEPkXfv3lVkZKQkKSgoSM8++6wWLVqkH374wdY+Li5OhQoV0tChQxUeHq758+dLkk6dOqVp06axnkeqdu7cOU2fPl1ffPGFVqxYYRteqFAhde3aVXFxcRoyZIjGjh0rSWrZsiXXvz5FCFJINgl/XMPCwnTq1CmdO3dOktSpUyft3btXffv2tbV3c3NTpkyZ9Mcff2jJkiW24ZGRkVq6dKneeOONJ/sGgCfIx8dH3bt3V58+ffThhx9qwoQJtnF+fn4qUKCAKleurH379sncP3tAEr3zwfniv4NDhgzR//73P7388suaP3++fHx89Pnnn8vFxUXDhw9X+/btNXfuXL355puKiIjQW2+9paioKFvHKZ999hkhCqle1qxZNXDgQIWGhmrUqFF2OxkKFiyoEiVKyNvbW4cPH7bbGc31r08H7nCKZGESXAjZr18/rV27VsePH1fp0qX1yiuvqGvXrgoLC9PixYu1fv16VahQQevWrdPdu3dVtGhRubi42G7a2LJlSye/G+DJCA0NVbt27WS1WvXRRx/JYrGoffv2unPnjo4fP642bdqoSZMmkh58tBd4khJ2cT569Gh9+eWXateunU6fPq2mTZvqyJEjGjBggBYsWKBx48bp559/1qZNm5QtWzYtXrxYXl5eypkzp7JlyyZJ3FQUqV78d/yll16SxWLRqFGj9Pnnn8tisdhuDeDh4aE+ffqoUaNGto4lWC6eHhbDrzOS0aBBg/TFF19owYIFypw5s4YOHapvv/1Wp0+flp+fn7Zt26bJkycrLi5OAQEBmjZtmtzd3bmTPdK0ixcv6ptvvlHfvn317LPPKjo6Wh4eHtqxY4fc3Nz4YUWKcuTIEX377bd68cUXVb16dUnS119/rXbt2qlv374aOHCgpPsbkTdv3lT69OklSR999JG++eYbbd68WXnz5nVa/YCzbN68WePGjdOOHTtUtGhRXb16VZGRkdqxY4ft1G22hZ4uHJFCsrl69ap+++03zZw5U9WqVdOqVav0448/aurUqcqePbuk+/fGqVGjhuLi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1xcvLy+mTp1qBlM3btzg6NGj1KhRo5RbLSIiIvZKVftE5JGRlJTEkCFDWL9+Pe3atTO3JyQkEBkZSVJSEp6enhQUFGAYBmlpaTg5OanEuYiIiPzuVGxCRB4Z586dw8XFhWeffRb4d7pft27d8PLy4uzZsyQnJ1OlShUCAgJwdHTUEgAiIiLyh9DbhYg89ApHlPLz84sVi3BwcDAXnE5NTaVZs2b4+vqa+61Wq4IoERER+UNojpSIPPQK0/K8vb359ttvWbJkibm9XLly5ObmEhUVxfbt24udp8ISIiIi8kfRHCkReaSsWrWKwMBA3n77bbp27Ur58uWZO3cuWVlZpKamagRKREREHggFUiLySDEMg4SEBEaMGIHVasXd3Z3q1auzdetWnJyczFQ/ERERkT+SAikReSRlZ2eTk5ODzWajbt26WCwWFZYQERGRB0aBlIjYhaIL9oqIiIj80RRIiYiIiIiIlJC6b0VEREREREpIgZSIiIiIiEgJKZASEREREREpIQVSIiIiIiIiJaRASkREREREpIQUSImIiIiIiJSQAikRESnz1q5di7u7+/98HQcHB+Lj4//n64iIyMNPgZSIiNiFgQMH8tprr5V2M0REpIxQICUiIiIiIlJCCqRERMTuLVq0iOeee46KFStSs2ZN3nnnHXJzc+85Lj4+nnr16uHs7EyXLl04f/58sf1btmyhWbNmODs7U6dOHWbMmMGdO3ce1McQEZGHiAIpERGxexaLhaVLl3Ly5Ek++ugjdu/eTVBQULFj8vLymDNnDuvWrePAgQNcvXqVPn36mPu//PJL+vfvz8iRIzl16hQffPABa9euZc6cOQ/644iIyEPAwTAMo7QbISIi8r8aOHAgV69e/VXFHmJjYxk6dCjZ2dnA3WITgwYN4vDhw7Rq1QqA06dP4+npyZEjR2jZsiU+Pj507tyZSZMmmdeJiooiKCiIH3/8EbhbbCIuLk5ztUREygDH0m6AiIjIH23Xrl0EBwdz+vRprl27xp07d7h58yZ5eXm4uLgA4OjoSIsWLcxznnnmGdzd3fnmm29o2bIlx48f58CBA8VGoKxW6z3XERGRskGBlIiI2LXvv/+erl278vbbbzNnzhyeeOIJ9u/fz+DBg7l169avDoByc3OZMWMGPXr0uGefs7Pz791sERF5yCmQEhERu5aamorNZmPhwoVYLHenBkdHR99z3J07d0hJSaFly5YAnDlzhqtXr+Lp6QlAs2bNOHPmDE8//fSDa7yIiDy0FEiJiIjdyMnJIT09vdi2J598ktu3b7Ns2TJeffVVDhw4wMqVK+8518nJieHDh7N06VIcHR0JDAykdevWZmA1bdo0unbtyl/+8hd69uyJxWLh+PHjnDhxgtmzZz+IjyciIg8RVe0TERG7sWfPHpo2bVrs3/r161m0aBGhoaF4eXmxYcMGgoOD7znXxcWFCRMm0LdvX9q1a4erqyv/+Mc/zP1dunRh69atfP7557Ro0YLWrVuzePFiatWq9SA/ooiIPCRUtU9ERERERKSENCIlIiIiIiJSQgqkRERERERESkiBlIiIiIiISAkpkBIRERERESkhBVIiIiIiIiIlpEBKRERERESkhBRIiYiIiIiIlJACKRERERERkRJSICUiIiIiIlJCCqRERERERERKSIGUiIiIiIhICSmQEhERERERKaH/B4eQjEw5HhW4AAAAAElFTkSuQmCC\n"},"metadata":{}}],"source":["import pandas as pd\n","from google.colab import drive\n","from collections import Counter\n","import matplotlib.pyplot as plt\n","import seaborn as sns\n","\n","drive.mount('/content/drive')\n","\n","\n","\n","df_strong_unbalanced = pd.read_csv(\"/content/drive/MyDrive/personality/classification/data/input/labeled_unbalanced_sample_strong.csv\")\n","df_weak_unbalanced   = pd.read_csv(\"/content/drive/MyDrive/personality/classification/data/input/labeled_unbalanced_sample_combined.csv\")\n","df_strong_balanced   = pd.read_csv(\"/content/drive/MyDrive/personality/classification/data/input/labeled_balanced_sample_strong.csv\")\n","df_weak_balanced     = pd.read_csv(\"/content/drive/MyDrive/personality/classification/data/input/labeled_balanced_sample_combined.csv\")\n","\n","\n","df_strong_unbalanced['dataset'] = 'strong_unbalanced'\n","\n","df_weak_unbalanced['dataset'] = 'combined_unbalanced'\n","\n","df_strong_balanced['dataset'] = 'strong_balanced'\n","\n","df_weak_balanced['dataset'] = 'combined_balanced'\n","\n","# 2) Concatenate all four datasets\n","df = pd.concat(\n","    [\n","        df_strong_unbalanced,\n","        df_weak_unbalanced,\n","        df_strong_balanced,\n","        df_weak_balanced\n","    ],\n","    ignore_index=True\n",")\n","\n","# 3) Shuffle the combined DataFrame (optional, but often useful)\n","df = df.sample(frac=1, random_state=42).reset_index(drop=True)\n","\n","# 4) Verify the result\n","print(df['labels'].value_counts())\n","\n","# 5) Convert counts to DataFrame for plotting\n","label_counts = df.groupby(['dataset', 'labels']).size().reset_index(name='count')\n","\n","# 6) Plot the grouped bar chart\n","plt.figure(figsize=(10, 6))\n","sns.barplot(x='dataset', y='count', hue='labels', data=label_counts)\n","plt.xlabel('Label')\n","plt.ylabel('Frequency')\n","plt.title('Frequency of Each Label by Dataset')\n","plt.xticks(rotation=45)\n","plt.legend(title='Dataset')\n","plt.show()\n"]},{"cell_type":"code","execution_count":null,"metadata":{"cellView":"form","id":"bSR72eTLxqy4"},"outputs":[],"source":["# @title old\n","from sklearn.model_selection import train_test_split\n","from datasets import Dataset, DatasetDict\n","\n","# Split the strong dataset into train and temp (test + validation)\n","train_df_strong, temp_df_strong = train_test_split(df_strong_balanced, test_size=0.3, random_state=42, stratify=df_strong_balanced['label'])\n","# Now split temp into test and validation (50% of 30% = 15% each for test and validation)\n","test_df_strong, val_df_strong = train_test_split(temp_df_strong, test_size=0.5, random_state=42, stratify=temp_df_strong['label'])\n","\n","# Split the weak dataset into train and temp (test + validation)\n","train_df_weak, temp_df_weak = train_test_split(df_weak_balanced, test_size=0.3, random_state=42, stratify=df_weak_balanced['label'])\n","# Now split temp into test and validation (50% of 30% = 15% each for test and validation)\n","test_df_weak, val_df_weak = train_test_split(temp_df_weak, test_size=0.5, random_state=42, stratify=temp_df_weak['label'])\n","\n","# Convert the train, validation, and test DataFrames into Dataset format\n","train_dataset_strong = Dataset.from_pandas(train_df_strong.reset_index(drop=True))\n","test_dataset_strong = Dataset.from_pandas(test_df_strong.reset_index(drop=True))\n","val_dataset_strong = Dataset.from_pandas(val_df_strong.reset_index(drop=True))\n","\n","train_dataset_weak = Dataset.from_pandas(train_df_weak.reset_index(drop=True))\n","test_dataset_weak = Dataset.from_pandas(test_df_weak.reset_index(drop=True))\n","val_dataset_weak = Dataset.from_pandas(val_df_weak.reset_index(drop=True))\n","\n","# Create the dataset dictionary with separate strong and weak sets\n","dataset_dict = DatasetDict({\n","    'train_strong': train_dataset_strong,\n","    'validation_strong': val_dataset_strong,\n","    'test_strong': test_dataset_strong,\n","    'train_weak': train_dataset_weak,\n","    'validation_weak': val_dataset_weak,\n","    'test_weak': test_dataset_weak\n","})\n","\n","# View the dataset dictionary keys\n","print(dataset_dict)\n"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"H9NA3TmKyuy5","colab":{"base_uri":"https://localhost:8080/","height":281,"referenced_widgets":["7070002aba0b4afeb3905111e613b64b","7f24c86b3a2e4627a7e03ab0e1a6336d","d7138bf3f6c34f939e6a8a752b8fc3b7","17f56b1579884a268373aa5d75a490d0","0b5b741594a0466a9d73cf8283ff1b4d","15b4dc8f6d614364890c1730d992a5dc","5196a660739349e8a4c7b4552d2554a7","273049f6f020484eb7ca05f3c9920f16","a98f526741804bccab47d4e59a3e081c","f6a915b61dbb4ef482a5ab30a84a9617","4c258957c868436fb8968c3dd94c2a94","0665f1ed464b4ee296808f10133b8748","d57802f5c43d49b481a451e9e9e8662f","fa3e9e2e7f324d8ba044b4fc1d987a21","3696eeefaed346db89c0a97ee484436e","85a07ec1eb6a433abe600ab610fa4f1d","cc99638ebf614514b21fb5fe9de74c74","fc44dae3b5bf4f0c90bcb4adfd4ae35d","399a2b3b9912441e90c2caf550b23d23","69c5c8db42334883bf22a8112ba8c24d","a75d55e7b46d493aa8f1a5b517924b5d","11ad864d7df64a7e897d8dd278c7dfe3","86c36e17ce3f481b97c3a96bfb92f64d","05089c2614944a8fb5f97733670e708e","7990128df469444199cbeca50fd9b845","e22bf0970d704e1a8d7d0e7ff116bdd3","33f3d790826348488885c05d34d1701a","8cdf2e0a377d4d7b810cc13044a2b82e","de901ffbf7ae4679bbd7ab35442f0725","d368ea8fa5de438b886fff2db1d7bd27","5c4055c7bf864b4b88b2869ead22938e","a0b77437558445b4baf831c261c20725","5a919e654f3c4543966fe95defbf15c5","fe2f852271f2423984a8e99b7e53e32e","f13121dfc5c9426db42626980b5b58c2","475f7683d3254e18b28cf87624c920c1","11a074858394455c9a3c2e27fdfa794b","d5a836875d954cb7b9e3f31b98097ec8","2464b855e5af4581906bc24027c56920","7a068674cf9b4a4b8b23e1143d35c5f2","f630f21ca35846f796a45db77d6fb271","0d95f5d1d4ea48319bf591b5d1709265","1b44403205e243b493c909320e30359d","6c8a500f187e46968e833ce558d14f38","05e95285ca1f49439fb11c29af604b72","e7a55209b6da47958728ea7075bf6e4f","de360fa3b8b34b3880398a6d5ece7a16","10755139021b481fa58db946756585ce","535612938f424be98b2779c891936e7d","fe10c550e4814e448f656a9734d36b7f","9a54827d6741417c88c1bd55418eb483","219884d8ff0a45d8803c2f882786c393","155605468de64565aeb9c5bf3767d0dd","be04db223d334502abe75ce26d619589","3c9fef23f30c440980ef388cf41ca15d"]},"executionInfo":{"status":"ok","timestamp":1743154177375,"user_tz":-60,"elapsed":20682,"user":{"displayName":"Lukas","userId":"09276477477582089903"}},"outputId":"bcbcd945-7da4-4c8b-efe8-cbe388672093"},"outputs":[{"output_type":"stream","name":"stderr","text":["/usr/local/lib/python3.11/dist-packages/huggingface_hub/utils/_auth.py:94: UserWarning: \n","The secret `HF_TOKEN` does not exist in your Colab secrets.\n","To authenticate with the Hugging Face Hub, create a token in your settings tab (https://huggingface.co/settings/tokens), set it as secret in your Google Colab and restart your session.\n","You will be able to reuse this secret in all of your notebooks.\n","Please note that authentication is recommended but still optional to access public models or datasets.\n","  warnings.warn(\n"]},{"output_type":"display_data","data":{"text/plain":["Downloading builder script:   0%|          | 0.00/6.79k [00:00<?, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"7070002aba0b4afeb3905111e613b64b"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["tokenizer_config.json:   0%|          | 0.00/25.0 [00:00<?, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"0665f1ed464b4ee296808f10133b8748"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["config.json:   0%|          | 0.00/615 [00:00<?, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"86c36e17ce3f481b97c3a96bfb92f64d"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["sentencepiece.bpe.model:   0%|          | 0.00/5.07M [00:00<?, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"fe2f852271f2423984a8e99b7e53e32e"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":["tokenizer.json:   0%|          | 0.00/9.10M [00:00<?, ?B/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"05e95285ca1f49439fb11c29af604b72"}},"metadata":{}}],"source":["import pandas as pd\n","import torch\n","import random\n","import numpy as np\n","from sklearn.model_selection import StratifiedKFold\n","from transformers import (\n","    AutoTokenizer, AutoModelForSequenceClassification, Trainer, TrainingArguments, DataCollatorWithPadding\n",")\n","from datasets import Dataset\n","import evaluate\n","\n","# Load evaluation metric\n","metric = evaluate.load(\"f1\")\n","\n","# Function to compute F1 score\n","def compute_metrics(eval_pred):\n","    logits, labels = eval_pred\n","    predictions = np.argmax(logits, axis=-1)\n","    return metric.compute(predictions=predictions, references=labels, average=\"macro\")\n","\n","# Function to set random seeds\n","def set_seeds(seed):\n","    random.seed(seed)\n","    np.random.seed(seed)\n","    torch.manual_seed(seed)\n","    torch.cuda.manual_seed_all(seed)\n","\n","# Initialize tokenizer and data collator\n","tokenizer = AutoTokenizer.from_pretrained(\"xlm-roberta-base\")\n","data_collator = DataCollatorWithPadding(tokenizer=tokenizer)\n","\n","# Define random seeds for different runs\n","seeds = [42, 84, 123]\n","\n","# Create a mapping from unique labels to integer values\n","label_mapping = {label: idx for idx, label in enumerate(df[\"labels\"].unique())}\n","df[\"labels\"] = df[\"labels\"].map(label_mapping)\n","\n","# Create StratifiedKFold object\n","n_splits = 3\n","skf = StratifiedKFold(n_splits=n_splits, shuffle=True, random_state=42)\n"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"SAmgMeyyaly9"},"outputs":[],"source":["from transformers import AutoModelForSequenceClassification, Trainer, TrainingArguments\n","\n","# Store results\n","all_predictions = []\n","f1_summary = []\n","\n","def process_subset(df, dataset_label):\n","    \"\"\"\n","    1) Runs cross-validation (CV) for the selected dataset subset, storing fold performance.\n","    2) Trains a final model on the entire subset (for each seed) and saves it.\n","    \"\"\"\n","    df_subset = df[df[\"dataset\"] == dataset_label].reset_index(drop=True)\n","\n","    for seed in seeds:\n","        # -----------------------------\n","        #  A) Cross-validation for seed\n","        # -----------------------------\n","        set_seeds(seed)\n","\n","        df_seeded = df_subset.sample(frac=1, random_state=seed).reset_index(drop=True)\n","\n","        for fold, (train_idx, val_idx) in enumerate(skf.split(df_seeded[\"text\"], df_seeded[\"labels\"])):\n","            print(f\"Running CV - Dataset={dataset_label}, Seed={seed}, Fold={fold+1}\")\n","\n","            train_df = df_seeded.iloc[train_idx]\n","            val_df   = df_seeded.iloc[val_idx]\n","\n","            # Create Hugging Face Datasets\n","            train_dataset = Dataset.from_pandas(train_df[['text', 'labels']])\n","            val_dataset   = Dataset.from_pandas(val_df[['text', 'labels']])\n","\n","            def tokenize_function(examples):\n","                return tokenizer(\n","                    examples['text'],\n","                    padding='max_length',\n","                    truncation=True,\n","                    return_tensors=\"pt\"\n","                )\n","\n","            train_dataset = train_dataset.map(tokenize_function, batched=True)\n","            val_dataset   = val_dataset.map(tokenize_function, batched=True)\n","\n","            model = AutoModelForSequenceClassification.from_pretrained(\n","                \"xlm-roberta-base\",\n","                num_labels=df_subset[\"labels\"].nunique()\n","            )\n","\n","            # No need to save each fold's model => 'save_strategy=\"no\"'\n","            training_args = TrainingArguments(\n","                output_dir = f\"./results_{dataset_label}_seed_{seed}_fold_{fold}\",\n","                evaluation_strategy = \"epoch\",\n","                seed = seed,\n","                per_device_train_batch_size = 16,\n","                per_device_eval_batch_size = 16,\n","                num_train_epochs = 5,\n","                weight_decay = 0.01,\n","                learning_rate = 2e-5,\n","                logging_dir = f\"./logs_{dataset_label}_seed_{seed}_fold_{fold}\",\n","                logging_steps = 10,\n","                save_strategy = \"no\",\n","            )\n","\n","            trainer = Trainer(\n","                model = model,\n","                args = training_args,\n","                train_dataset = train_dataset,\n","                eval_dataset = val_dataset,\n","                compute_metrics = compute_metrics,\n","                data_collator = data_collator\n","            )\n","\n","            trainer.train()\n","            eval_results = trainer.evaluate()\n","\n","            # Track metrics\n","            f1_summary.append({\n","                \"dataset\": dataset_label,\n","                \"seed\": seed,\n","                \"fold\": fold + 1,\n","                \"macro_f1\": eval_results[\"eval_f1\"]\n","            })\n","\n","            # Optional: store predictions from each fold\n","            predictions = trainer.predict(val_dataset)\n","            pred_labels = np.argmax(predictions.predictions, axis=-1)\n","\n","            all_predictions.append(pd.DataFrame({\n","                \"dataset\": dataset_label,\n","                \"seed\": seed,\n","                \"fold\": fold + 1,\n","                \"text\": val_df[\"text\"].values,\n","                \"true_label\": val_df[\"labels\"].values,\n","                \"predicted_label\": pred_labels\n","            }))\n","\n","        # -------------------------------------\n","        #  B) Train Final Model on All Data (for this seed)\n","        # -------------------------------------\n","        print(f\"\\nTraining final model on the entire {dataset_label} dataset for seed {seed}...\")\n","\n","        # Shuffle again with the same seed\n","        df_final = df_subset.sample(frac=1, random_state=seed).reset_index(drop=True)\n","        final_dataset = Dataset.from_pandas(df_final[['text', 'labels']])\n","\n","        final_dataset = final_dataset.map(tokenize_function, batched=True)\n","\n","        final_model = AutoModelForSequenceClassification.from_pretrained(\n","            \"xlm-roberta-base\",\n","            num_labels=df_subset[\"labels\"].nunique()\n","        )\n","\n","\n","\n","        final_training_args = TrainingArguments(\n","            output_dir = f\"/content/drive/MyDrive/personality/classification/models/final_model_results_{dataset_label}_seed_{seed}\",\n","            evaluation_strategy = \"no\",  # or \"epoch\" if you want to see training metrics\n","            seed = seed,\n","            per_device_train_batch_size = 16,\n","            num_train_epochs = 5,\n","            weight_decay = 0.01,\n","            learning_rate = 2e-5,\n","            logging_dir = f\"./logs_final_{dataset_label}_seed_{seed}\",\n","            logging_steps = 10,\n","            save_strategy = \"no\",  # We'll manually save after training\n","        )\n","\n","        final_trainer = Trainer(\n","            model = final_model,\n","            args = final_training_args,\n","            train_dataset = final_dataset,\n","            # no separate eval_dataset here, if you want to just train fully\n","            compute_metrics = compute_metrics,\n","            data_collator = data_collator\n","        )\n","\n","        final_trainer.train()\n","\n","        # Save just once, the final model\n","        final_save_dir = f\"/content/drive/MyDrive/personality/classification/models/final_model_{dataset_label}_seed_{seed}\"\n","        final_trainer.save_model(final_save_dir)\n","        tokenizer.save_pretrained(final_save_dir)\n","\n","        print(f\"Final model saved to: {final_save_dir}\\n\")\n","# Run for all dataset\n","for dataset_label in [\"combined_balanced\", \"strong_balanced\",\"combined_unbalanced\", \"strong_unbalanced\",  ]:\n","    process_subset(df, dataset_label)\n","\n","# Convert results to DataFrames\n","all_predictions_df = pd.concat(all_predictions, ignore_index=True)\n","f1_summary_df = pd.DataFrame(f1_summary)\n","\n","# Save outputs\n","all_predictions_df.to_csv(\"/content/drive/MyDrive/personality/final_predictions_supervised.csv\", index=False)\n","\n","# Print summary\n","print(f1_summary_df)\n"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":426},"executionInfo":{"elapsed":217,"status":"ok","timestamp":1739449323585,"user":{"displayName":"Lukas","userId":"09276477477582089903"},"user_tz":-60},"id":"UfW67UVXXikk","outputId":"4ca703d4-bb50-4618-f636-10f4e87698f5"},"outputs":[{"data":{"application/vnd.google.colaboratory.intrinsic+json":{"summary":"{\n  \"name\": \"results_df\",\n  \"rows\": 12,\n  \"fields\": [\n    {\n      \"column\": \"class\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0,\n        \"min\": 0,\n        \"max\": 2,\n        \"num_unique_values\": 3,\n        \"samples\": [\n          0,\n          1,\n          2\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"avg_F1_Score\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.14222390938319732,\n        \"min\": 0.37968980346161235,\n        \"max\": 0.8353778004573407,\n        \"num_unique_values\": 12,\n        \"samples\": [\n          0.46284032002114667,\n          0.7531324445421909,\n          0.37968980346161235\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"sd_F1_Score\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.0732332516433537,\n        \"min\": 0.004555109770362637,\n        \"max\": 0.23737421447769133,\n        \"num_unique_values\": 12,\n        \"samples\": [\n          0.23737421447769133,\n          0.004555109770362637,\n          0.030445615121245644\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"macro_F1\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.031987455167660245,\n        \"min\": 0.6296925325036229,\n        \"max\": 0.7018793085863088,\n        \"num_unique_values\": 4,\n        \"samples\": [\n          0.7018793085863088,\n          0.6296925325036229,\n          0.631744421110152\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"sd_macro_F1\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.03270863776436606,\n        \"min\": 0.011825906872994287,\n        \"max\": 0.0817286087180829,\n        \"num_unique_values\": 4,\n        \"samples\": [\n          0.016571139855517523,\n          0.07079344008342132,\n          0.011825906872994287\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"dataset\",\n      \"properties\": {\n        \"dtype\": \"category\",\n        \"num_unique_values\": 4,\n        \"samples\": [\n          \"strong_balanced\",\n          \"strong_unbalanced\",\n          \"combined_balanced\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}","type":"dataframe","variable_name":"results_df"},"text/html":["\n","  <div id=\"df-97c6f58f-966f-41bf-bf5e-377730905f2b\" class=\"colab-df-container\">\n","    <div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>class</th>\n","      <th>avg_F1_Score</th>\n","      <th>sd_F1_Score</th>\n","      <th>macro_F1</th>\n","      <th>sd_macro_F1</th>\n","      <th>dataset</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>0</td>\n","      <td>0.379690</td>\n","      <td>0.030446</td>\n","      <td>0.631744</td>\n","      <td>0.011826</td>\n","      <td>combined_balanced</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>0</td>\n","      <td>0.517128</td>\n","      <td>0.040368</td>\n","      <td>0.701879</td>\n","      <td>0.016571</td>\n","      <td>strong_balanced</td>\n","    </tr>\n","    <tr>\n","      <th>2</th>\n","      <td>0</td>\n","      <td>0.703102</td>\n","      <td>0.009089</td>\n","      <td>0.632117</td>\n","      <td>0.081729</td>\n","      <td>combined_unbalanced</td>\n","    </tr>\n","    <tr>\n","      <th>3</th>\n","      <td>0</td>\n","      <td>0.678948</td>\n","      <td>0.026155</td>\n","      <td>0.629693</td>\n","      <td>0.070793</td>\n","      <td>strong_unbalanced</td>\n","    </tr>\n","    <tr>\n","      <th>4</th>\n","      <td>1</td>\n","      <td>0.806010</td>\n","      <td>0.008535</td>\n","      <td>0.631744</td>\n","      <td>0.011826</td>\n","      <td>combined_balanced</td>\n","    </tr>\n","    <tr>\n","      <th>5</th>\n","      <td>1</td>\n","      <td>0.835378</td>\n","      <td>0.014428</td>\n","      <td>0.701879</td>\n","      <td>0.016571</td>\n","      <td>strong_balanced</td>\n","    </tr>\n","    <tr>\n","      <th>6</th>\n","      <td>1</td>\n","      <td>0.730407</td>\n","      <td>0.016982</td>\n","      <td>0.632117</td>\n","      <td>0.081729</td>\n","      <td>combined_unbalanced</td>\n","    </tr>\n","    <tr>\n","      <th>7</th>\n","      <td>1</td>\n","      <td>0.674786</td>\n","      <td>0.144962</td>\n","      <td>0.629693</td>\n","      <td>0.070793</td>\n","      <td>strong_unbalanced</td>\n","    </tr>\n","    <tr>\n","      <th>8</th>\n","      <td>2</td>\n","      <td>0.709534</td>\n","      <td>0.009470</td>\n","      <td>0.631744</td>\n","      <td>0.011826</td>\n","      <td>combined_balanced</td>\n","    </tr>\n","    <tr>\n","      <th>9</th>\n","      <td>2</td>\n","      <td>0.753132</td>\n","      <td>0.004555</td>\n","      <td>0.701879</td>\n","      <td>0.016571</td>\n","      <td>strong_balanced</td>\n","    </tr>\n","    <tr>\n","      <th>10</th>\n","      <td>2</td>\n","      <td>0.462840</td>\n","      <td>0.237374</td>\n","      <td>0.632117</td>\n","      <td>0.081729</td>\n","      <td>combined_unbalanced</td>\n","    </tr>\n","    <tr>\n","      <th>11</th>\n","      <td>2</td>\n","      <td>0.535343</td>\n","      <td>0.118371</td>\n","      <td>0.629693</td>\n","      <td>0.070793</td>\n","      <td>strong_unbalanced</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>\n","    <div class=\"colab-df-buttons\">\n","\n","  <div class=\"colab-df-container\">\n","    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-97c6f58f-966f-41bf-bf5e-377730905f2b')\"\n","            title=\"Convert this dataframe to an interactive table.\"\n","            style=\"display:none;\">\n","\n","  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n","    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n","  </svg>\n","    </button>\n","\n","  <style>\n","    .colab-df-container {\n","      display:flex;\n","      gap: 12px;\n","    }\n","\n","    .colab-df-convert {\n","      background-color: #E8F0FE;\n","      border: none;\n","      border-radius: 50%;\n","      cursor: pointer;\n","      display: none;\n","      fill: #1967D2;\n","      height: 32px;\n","      padding: 0 0 0 0;\n","      width: 32px;\n","    }\n","\n","    .colab-df-convert:hover {\n","      background-color: #E2EBFA;\n","      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n","      fill: #174EA6;\n","    }\n","\n","    .colab-df-buttons div {\n","      margin-bottom: 4px;\n","    }\n","\n","    [theme=dark] .colab-df-convert {\n","      background-color: #3B4455;\n","      fill: #D2E3FC;\n","    }\n","\n","    [theme=dark] .colab-df-convert:hover {\n","      background-color: #434B5C;\n","      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n","      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n","      fill: #FFFFFF;\n","    }\n","  </style>\n","\n","    <script>\n","      const buttonEl =\n","        document.querySelector('#df-97c6f58f-966f-41bf-bf5e-377730905f2b button.colab-df-convert');\n","      buttonEl.style.display =\n","        google.colab.kernel.accessAllowed ? 'block' : 'none';\n","\n","      async function convertToInteractive(key) {\n","        const element = document.querySelector('#df-97c6f58f-966f-41bf-bf5e-377730905f2b');\n","        const dataTable =\n","          await google.colab.kernel.invokeFunction('convertToInteractive',\n","                                                    [key], {});\n","        if (!dataTable) return;\n","\n","        const docLinkHtml = 'Like what you see? Visit the ' +\n","          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n","          + ' to learn more about interactive tables.';\n","        element.innerHTML = '';\n","        dataTable['output_type'] = 'display_data';\n","        await google.colab.output.renderOutput(dataTable, element);\n","        const docLink = document.createElement('div');\n","        docLink.innerHTML = docLinkHtml;\n","        element.appendChild(docLink);\n","      }\n","    </script>\n","  </div>\n","\n","\n","<div id=\"df-0963df55-6512-4241-a409-d00dbf20fe42\">\n","  <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-0963df55-6512-4241-a409-d00dbf20fe42')\"\n","            title=\"Suggest charts\"\n","            style=\"display:none;\">\n","\n","<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n","     width=\"24px\">\n","    <g>\n","        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n","    </g>\n","</svg>\n","  </button>\n","\n","<style>\n","  .colab-df-quickchart {\n","      --bg-color: #E8F0FE;\n","      --fill-color: #1967D2;\n","      --hover-bg-color: #E2EBFA;\n","      --hover-fill-color: #174EA6;\n","      --disabled-fill-color: #AAA;\n","      --disabled-bg-color: #DDD;\n","  }\n","\n","  [theme=dark] .colab-df-quickchart {\n","      --bg-color: #3B4455;\n","      --fill-color: #D2E3FC;\n","      --hover-bg-color: #434B5C;\n","      --hover-fill-color: #FFFFFF;\n","      --disabled-bg-color: #3B4455;\n","      --disabled-fill-color: #666;\n","  }\n","\n","  .colab-df-quickchart {\n","    background-color: var(--bg-color);\n","    border: none;\n","    border-radius: 50%;\n","    cursor: pointer;\n","    display: none;\n","    fill: var(--fill-color);\n","    height: 32px;\n","    padding: 0;\n","    width: 32px;\n","  }\n","\n","  .colab-df-quickchart:hover {\n","    background-color: var(--hover-bg-color);\n","    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n","    fill: var(--button-hover-fill-color);\n","  }\n","\n","  .colab-df-quickchart-complete:disabled,\n","  .colab-df-quickchart-complete:disabled:hover {\n","    background-color: var(--disabled-bg-color);\n","    fill: var(--disabled-fill-color);\n","    box-shadow: none;\n","  }\n","\n","  .colab-df-spinner {\n","    border: 2px solid var(--fill-color);\n","    border-color: transparent;\n","    border-bottom-color: var(--fill-color);\n","    animation:\n","      spin 1s steps(1) infinite;\n","  }\n","\n","  @keyframes spin {\n","    0% {\n","      border-color: transparent;\n","      border-bottom-color: var(--fill-color);\n","      border-left-color: var(--fill-color);\n","    }\n","    20% {\n","      border-color: transparent;\n","      border-left-color: var(--fill-color);\n","      border-top-color: var(--fill-color);\n","    }\n","    30% {\n","      border-color: transparent;\n","      border-left-color: var(--fill-color);\n","      border-top-color: var(--fill-color);\n","      border-right-color: var(--fill-color);\n","    }\n","    40% {\n","      border-color: transparent;\n","      border-right-color: var(--fill-color);\n","      border-top-color: var(--fill-color);\n","    }\n","    60% {\n","      border-color: transparent;\n","      border-right-color: var(--fill-color);\n","    }\n","    80% {\n","      border-color: transparent;\n","      border-right-color: var(--fill-color);\n","      border-bottom-color: var(--fill-color);\n","    }\n","    90% {\n","      border-color: transparent;\n","      border-bottom-color: var(--fill-color);\n","    }\n","  }\n","</style>\n","\n","  <script>\n","    async function quickchart(key) {\n","      const quickchartButtonEl =\n","        document.querySelector('#' + key + ' button');\n","      quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n","      quickchartButtonEl.classList.add('colab-df-spinner');\n","      try {\n","        const charts = await google.colab.kernel.invokeFunction(\n","            'suggestCharts', [key], {});\n","      } catch (error) {\n","        console.error('Error during call to suggestCharts:', error);\n","      }\n","      quickchartButtonEl.classList.remove('colab-df-spinner');\n","      quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n","    }\n","    (() => {\n","      let quickchartButtonEl =\n","        document.querySelector('#df-0963df55-6512-4241-a409-d00dbf20fe42 button');\n","      quickchartButtonEl.style.display =\n","        google.colab.kernel.accessAllowed ? 'block' : 'none';\n","    })();\n","  </script>\n","</div>\n","\n","  <div id=\"id_0eaeb2c6-2228-4c07-8e23-fc34b9fb8dc5\">\n","    <style>\n","      .colab-df-generate {\n","        background-color: #E8F0FE;\n","        border: none;\n","        border-radius: 50%;\n","        cursor: pointer;\n","        display: none;\n","        fill: #1967D2;\n","        height: 32px;\n","        padding: 0 0 0 0;\n","        width: 32px;\n","      }\n","\n","      .colab-df-generate:hover {\n","        background-color: #E2EBFA;\n","        box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n","        fill: #174EA6;\n","      }\n","\n","      [theme=dark] .colab-df-generate {\n","        background-color: #3B4455;\n","        fill: #D2E3FC;\n","      }\n","\n","      [theme=dark] .colab-df-generate:hover {\n","        background-color: #434B5C;\n","        box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n","        filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n","        fill: #FFFFFF;\n","      }\n","    </style>\n","    <button class=\"colab-df-generate\" onclick=\"generateWithVariable('results_df')\"\n","            title=\"Generate code using this dataframe.\"\n","            style=\"display:none;\">\n","\n","  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n","       width=\"24px\">\n","    <path d=\"M7,19H8.4L18.45,9,17,7.55,7,17.6ZM5,21V16.75L18.45,3.32a2,2,0,0,1,2.83,0l1.4,1.43a1.91,1.91,0,0,1,.58,1.4,1.91,1.91,0,0,1-.58,1.4L9.25,21ZM18.45,9,17,7.55Zm-12,3A5.31,5.31,0,0,0,4.9,8.1,5.31,5.31,0,0,0,1,6.5,5.31,5.31,0,0,0,4.9,4.9,5.31,5.31,0,0,0,6.5,1,5.31,5.31,0,0,0,8.1,4.9,5.31,5.31,0,0,0,12,6.5,5.46,5.46,0,0,0,6.5,12Z\"/>\n","  </svg>\n","    </button>\n","    <script>\n","      (() => {\n","      const buttonEl =\n","        document.querySelector('#id_0eaeb2c6-2228-4c07-8e23-fc34b9fb8dc5 button.colab-df-generate');\n","      buttonEl.style.display =\n","        google.colab.kernel.accessAllowed ? 'block' : 'none';\n","\n","      buttonEl.onclick = () => {\n","        google.colab.notebook.generateWithVariable('results_df');\n","      }\n","      })();\n","    </script>\n","  </div>\n","\n","    </div>\n","  </div>\n"],"text/plain":["    class  avg_F1_Score  sd_F1_Score  macro_F1  sd_macro_F1  \\\n","0       0      0.379690     0.030446  0.631744     0.011826   \n","1       0      0.517128     0.040368  0.701879     0.016571   \n","2       0      0.703102     0.009089  0.632117     0.081729   \n","3       0      0.678948     0.026155  0.629693     0.070793   \n","4       1      0.806010     0.008535  0.631744     0.011826   \n","5       1      0.835378     0.014428  0.701879     0.016571   \n","6       1      0.730407     0.016982  0.632117     0.081729   \n","7       1      0.674786     0.144962  0.629693     0.070793   \n","8       2      0.709534     0.009470  0.631744     0.011826   \n","9       2      0.753132     0.004555  0.701879     0.016571   \n","10      2      0.462840     0.237374  0.632117     0.081729   \n","11      2      0.535343     0.118371  0.629693     0.070793   \n","\n","                dataset  \n","0     combined_balanced  \n","1       strong_balanced  \n","2   combined_unbalanced  \n","3     strong_unbalanced  \n","4     combined_balanced  \n","5       strong_balanced  \n","6   combined_unbalanced  \n","7     strong_unbalanced  \n","8     combined_balanced  \n","9       strong_balanced  \n","10  combined_unbalanced  \n","11    strong_unbalanced  "]},"execution_count":25,"metadata":{},"output_type":"execute_result"}],"source":["import pandas as pd\n","import numpy as np\n","from sklearn.metrics import f1_score\n","\n","# Read data\n","all_predictions_df = pd.read_csv(\"/content/drive/MyDrive/personality/final_predictions_supervised.csv\")\n","\n","# Define datasets\n","DATASETS = [\"combined_balanced\", \"strong_balanced\", \"combined_unbalanced\", \"strong_unbalanced\"]\n","\n","# Define unique classes\n","classes = sorted(all_predictions_df['true_label'].unique())\n","\n","# Initialize dictionaries\n","class_f1_scores = {cls: {ds: {} for ds in DATASETS} for cls in classes}  # Store per-seed, per-fold F1\n","macro_f1_scores = {ds: {} for ds in DATASETS}  # Store per-seed macro-F1\n","\n","# Step 1: Compute per-class F1 scores and macro-F1 for each fold in each seed\n","for (dataset, seed, fold), subset in all_predictions_df.groupby([\"dataset\", \"seed\", \"fold\"]):\n","    f1_scores_per_fold = []\n","\n","    for cls in classes:\n","        y_true = (subset['true_label'] == cls).astype(int)\n","        y_pred = (subset['predicted_label'] == cls).astype(int)\n","\n","        f1 = f1_score(y_true, y_pred, zero_division=0)\n","        class_f1_scores[cls][dataset].setdefault(seed, []).append(f1)  # Store per-fold F1 score\n","        f1_scores_per_fold.append(f1)\n","\n","    # Compute macro-F1 for this fold\n","    macro_f1 = np.mean(f1_scores_per_fold) if f1_scores_per_fold else 0.0\n","    macro_f1_scores[dataset].setdefault(seed, []).append(macro_f1)\n","\n","# Step 2: Aggregate across folds (average F1 per seed)\n","agg_class_f1_scores = {cls: {ds: {} for ds in DATASETS} for cls in classes}\n","agg_macro_f1_scores = {ds: {} for ds in DATASETS}\n","\n","for cls in classes:\n","    for dataset in DATASETS:\n","        for seed, fold_f1_scores in class_f1_scores[cls][dataset].items():\n","            agg_class_f1_scores[cls][dataset][seed] = np.mean(fold_f1_scores)  # Average across folds\n","\n","for dataset in DATASETS:\n","    for seed, fold_macro_f1_scores in macro_f1_scores[dataset].items():\n","        agg_macro_f1_scores[dataset][seed] = np.mean(fold_macro_f1_scores)  # Average macro-F1 across folds\n","\n","# Step 3: Compute SD across seeds\n","results = []\n","for cls in classes:\n","    for dataset in DATASETS:\n","        f1_list = list(agg_class_f1_scores[cls][dataset].values())\n","        avg_f1 = np.mean(f1_list) if f1_list else np.nan\n","        sd_f1 = np.std(f1_list, ddof=1) if len(f1_list) > 1 else np.nan\n","\n","        macro_list = list(agg_macro_f1_scores[dataset].values())\n","        avg_macro_f1 = np.mean(macro_list) if macro_list else np.nan\n","        sd_macro_f1 = np.std(macro_list, ddof=1) if len(macro_list) > 1 else np.nan\n","\n","        results.append({\n","            'class': cls,\n","            'avg_F1_Score': avg_f1,\n","            'sd_F1_Score': sd_f1,\n","            'macro_F1': avg_macro_f1,\n","            'sd_macro_F1': sd_macro_f1,\n","            'dataset': dataset\n","        })\n","\n","# Convert to DataFrame\n","results_df = pd.DataFrame(results)\n","results_df\n","# Save and display\n","results_df.to_csv(\"/content/drive/MyDrive/personality/classification/data/input/classification_results_semisupervised_final.csv\", index=False)\n","print(results_df)\n"]},{"cell_type":"markdown","metadata":{"id":"OfWzNeMRzr1G"},"source":["# Unlabeled\n"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"sburcvLu7OP0","executionInfo":{"status":"ok","timestamp":1740062837349,"user_tz":-60,"elapsed":12,"user":{"displayName":"Lukas","userId":"09276477477582089903"}},"outputId":"3fbab99a-6f71-4a6c-ab41-09071c4990ed"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["['combined_balanced',\n"," 'strong_balanced',\n"," 'combined_unbalanced',\n"," 'strong_unbalanced']"]},"metadata":{},"execution_count":13}],"source":["import torch\n","import pandas as pd\n","import numpy as np\n","from transformers import AutoModelForSequenceClassification, AutoTokenizer, Trainer\n","from datasets import Dataset\n","import os\n","\n","# Load datasets\n","df_unlabeled = pd.read_csv(\"/content/drive/MyDrive/personality/classification/data/input/unlabaled/unlabeled_input_final.csv\")\n","df_trump = pd.read_csv(\"/content/drive/MyDrive/personality/classification/data/input/unlabaled/trump_prepared.csv\")\n","df_testsentences = pd.read_csv(\"/content/drive/MyDrive/personality/classification/data/test_sentences/test_sentences.csv\")\n","\n","# Add dataset identifiers\n","df_unlabeled[\"dataset\"] = \"unlabeled\"\n","df_trump[\"dataset\"] = \"trump\"\n","df_testsentences['dataset'] = \"test_sentences\"\n","\n","# List of final models to load\n","dataset_labels = [\"combined_balanced\", \"strong_balanced\", \"combined_unbalanced\", \"strong_unbalanced\"]\n","seeds = [42, 84, 123]  # Update with all used seeds\n","\n","# Paths for saving results\n","unlabeled_save_path = \"/content/drive/MyDrive/personality/classification/data/unlabeled_predictions_long_semisupvervised.csv\"\n","trump_save_path = \"/content/drive/MyDrive/personality/classification/results/trump_predictions_long.csv\"\n","test_save_path = \"/content/drive/MyDrive/personality/classification/results/test_sentences_predictions_long.csv\"\n","\n","# Function to tokenize input data\n","def tokenize_function(examples, tokenizer):\n","    return tokenizer(\n","        examples['text'],\n","        padding='max_length',\n","        truncation=True,\n","        return_tensors=\"pt\"\n","    )\n","\n","# Function to get predictions from a trained model\n","def get_predictions(model_path, df, tokenizer):\n","    dataset = Dataset.from_pandas(df[['text']])\n","    dataset = dataset.map(lambda x: tokenize_function(x, tokenizer), batched=True)\n","\n","    model = AutoModelForSequenceClassification.from_pretrained(model_path)\n","    trainer = Trainer(model=model, tokenizer=tokenizer)\n","\n","    predictions = trainer.predict(dataset)\n","    pred_labels = np.argmax(predictions.predictions, axis=-1)\n","\n","    return pred_labels\n","\n","# Load existing results if they exist\n","if os.path.exists(unlabeled_save_path):\n","    df_unlabeled_existing = pd.read_csv(unlabeled_save_path)\n","else:\n","    df_unlabeled_existing = pd.DataFrame()\n","\n","if os.path.exists(trump_save_path):\n","    df_trump_existing = pd.read_csv(trump_save_path)\n","else:\n","    df_trump_existing = pd.DataFrame()\n","\n","# Ensure columns exist in existing datasets\n","for df in [df_unlabeled_existing, df_trump_existing]:\n","    if df.empty:\n","        df[\"text\"] = []\n","        df[\"dataset\"] = []\n","        df[\"dataset_label\"] = []\n","        df[\"seed\"] = []\n","        df[\"pred_seed\"] = []\n","    else:\n","        if \"dataset_label\" not in df.columns:\n","            df[\"dataset_label\"] = None  # Add column if missing\n","        if \"seed\" not in df.columns:\n","            df[\"seed\"] = None\n","\n","# Store new results\n","new_results = []\n","\n","# Iterate over models and generate predictions\n","for dataset_label in dataset_labels:\n","    for seed in seeds:\n","        model_path = f\"/content/drive/MyDrive/personality/classification/models/final_model_{dataset_label}_seed_{seed}\"\n","        tokenizer = AutoTokenizer.from_pretrained(model_path)\n","\n","        # Ensure existing results contain necessary columns before filtering\n","        if not df_unlabeled_existing.empty:\n","            existing_unlabeled = df_unlabeled_existing[\n","                (df_unlabeled_existing['dataset_label'] == dataset_label) &\n","                (df_unlabeled_existing['seed'] == seed)\n","            ]\n","        else:\n","            existing_unlabeled = pd.DataFrame()\n","\n","        if not df_trump_existing.empty:\n","            existing_trump = df_trump_existing[\n","                (df_trump_existing['dataset_label'] == dataset_label) &\n","                (df_trump_existing['seed'] == seed)\n","            ]\n","        else:\n","            existing_trump = pd.DataFrame()\n","\n","        if not existing_unlabeled.empty and not existing_trump.empty:\n","            print(f\"Skipping already processed: {dataset_label}, Seed {seed}\")\n","            continue\n","\n","        print(f\"Applying model: {model_path} to datasets...\")\n","\n","        # Predict for both datasets in one loop\n","        for df, dataset_name in [(df_unlabeled, \"unlabeled\"), (df_trump, \"trump\")]:\n","            predictions = get_predictions(model_path, df, tokenizer)\n","            for i, text in enumerate(df[\"text\"]):\n","                new_results.append({\n","                    \"text\": text,\n","                    \"dataset\": dataset_name,  # Source dataset (unlabeled/trump)\n","                    \"dataset_label\": dataset_label,  # Model training dataset\n","                    \"seed\": seed,\n","                    \"pred_seed\": predictions[i]\n","                })\n","\n","# Convert new results to DataFrame\n","df_new = pd.DataFrame(new_results)\n","\n","# Append new results to existing files\n","if not df_new.empty:\n","    df_combined = pd.concat([df_unlabeled_existing, df_trump_existing, df_new], ignore_index=True)\n","    df_combined.to_csv(unlabeled_save_path, index=False)\n","\n","print(\"Predictions saved successfully in long format!\")\n"]},{"cell_type":"code","source":["df_testsentences['dataset'] = \"test_sentences\"\n","\n","# Store new results\n","test_sentences_results = []\n","new_results = []\n","# Iterate over models and generate predictions\n","for dataset_label in dataset_labels:\n","    for seed in seeds:\n","        model_path = f\"/content/drive/MyDrive/personality/classification/models/final_model_{dataset_label}_seed_{seed}\"\n","        tokenizer = AutoTokenizer.from_pretrained(model_path)\n","\n","\n","        # Predict for both datasets in one loop\n","        for df, dataset_name in [(df_testsentences, \"test_sentences\")]:\n","            predictions = get_predictions(model_path, df, tokenizer)\n","            for i, text in enumerate(df[\"text\"]):\n","                new_results.append({\n","                    \"text\": text,\n","                    \"expected_label\": df[\"expected_label\"][i],\n","                    \"dataset\": dataset_name,  # Source dataset (unlabeled/trump)\n","                    \"dataset_label\": dataset_label,  # Model training dataset\n","                    \"seed\": seed,\n","                    \"pred_label\": predictions[i]\n","                })\n","\n","# Convert new results to DataFrame\n","test_sentences_results = pd.DataFrame(new_results)\n","\n","# Append new results to existing files\n","\n","test_sentences_results.to_csv(\"/content/drive/MyDrive/personality/classification/data/test_sentences/test_sentences_predictions_semi.csv\", index=False)\n","\n","print(\"Predictions saved successfully in long format!\")\n"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":614},"id":"XFxo7IUZ1DMZ","executionInfo":{"status":"ok","timestamp":1740064237153,"user_tz":-60,"elapsed":14,"user":{"displayName":"Lukas","userId":"09276477477582089903"}},"outputId":"3fad6ea3-f605-408e-8a37-f8e9e79ce025"},"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["                                                 text expected_label  \\\n","0         Ich bin einfühlsam, zeige echtes Mitgefühl.            emp   \n","1   Ich zeige Verständnis für Bedürfnisse benachte...            emp   \n","2                     Ich bin mitfühlend, warmherzig.            emp   \n","3                      Ich bin eher hart, kaltherzig.           none   \n","4   Ich zeige wenig Verständnis und Mitgefühl für ...           none   \n","5   Ich bin gegenüber Benachteiligten herablassend...           none   \n","6   Ich bin machthungrig, erhebe den Führungsanspr...            dur   \n","7               Ich bin durchsetzungsstark, dominant.            dur   \n","8               Ich bin eine geborene Führungsperson.            dur   \n","9       Ich bin zögerlich, halte mich im Hintergrund.           none   \n","10  Ich bin in Diskussionen unaufdringlich, zurück...           none   \n","11            Ich bleibe lieber in der zweiten Reihe.           none   \n","12                  An Kolleginnen nervt mich nichts.           none   \n","13  Ende April schloss er die Nutzung der nagelneu...           none   \n","14  Aber es ist halt so, wir leben im Risiko und w...           none   \n","15  Und dann fange ich an mit den weiteren Nutztie...           none   \n","16              Und das war noch nicht mal so, Blunt.           none   \n","17  Schaut man sich bei unseren europäischen Nachb...           none   \n","\n","           dataset  \n","0   test_sentences  \n","1   test_sentences  \n","2   test_sentences  \n","3   test_sentences  \n","4   test_sentences  \n","5   test_sentences  \n","6   test_sentences  \n","7   test_sentences  \n","8   test_sentences  \n","9   test_sentences  \n","10  test_sentences  \n","11  test_sentences  \n","12  test_sentences  \n","13  test_sentences  \n","14  test_sentences  \n","15  test_sentences  \n","16  test_sentences  \n","17  test_sentences  "],"text/html":["\n","  <div id=\"df-0f3aa3ba-6f24-4d6a-900c-000d5c179434\" class=\"colab-df-container\">\n","    <div>\n","<style scoped>\n","    .dataframe tbody tr th:only-of-type {\n","        vertical-align: middle;\n","    }\n","\n","    .dataframe tbody tr th {\n","        vertical-align: top;\n","    }\n","\n","    .dataframe thead th {\n","        text-align: right;\n","    }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n","  <thead>\n","    <tr style=\"text-align: right;\">\n","      <th></th>\n","      <th>text</th>\n","      <th>expected_label</th>\n","      <th>dataset</th>\n","    </tr>\n","  </thead>\n","  <tbody>\n","    <tr>\n","      <th>0</th>\n","      <td>Ich bin einfühlsam, zeige echtes Mitgefühl.</td>\n","      <td>emp</td>\n","      <td>test_sentences</td>\n","    </tr>\n","    <tr>\n","      <th>1</th>\n","      <td>Ich zeige Verständnis für Bedürfnisse benachte...</td>\n","      <td>emp</td>\n","      <td>test_sentences</td>\n","    </tr>\n","    <tr>\n","      <th>2</th>\n","      <td>Ich bin mitfühlend, warmherzig.</td>\n","      <td>emp</td>\n","      <td>test_sentences</td>\n","    </tr>\n","    <tr>\n","      <th>3</th>\n","      <td>Ich bin eher hart, kaltherzig.</td>\n","      <td>none</td>\n","      <td>test_sentences</td>\n","    </tr>\n","    <tr>\n","      <th>4</th>\n","      <td>Ich zeige wenig Verständnis und Mitgefühl für ...</td>\n","      <td>none</td>\n","      <td>test_sentences</td>\n","    </tr>\n","    <tr>\n","      <th>5</th>\n","      <td>Ich bin gegenüber Benachteiligten herablassend...</td>\n","      <td>none</td>\n","      <td>test_sentences</td>\n","    </tr>\n","    <tr>\n","      <th>6</th>\n","      <td>Ich bin machthungrig, erhebe den Führungsanspr...</td>\n","      <td>dur</td>\n","      <td>test_sentences</td>\n","    </tr>\n","    <tr>\n","      <th>7</th>\n","      <td>Ich bin durchsetzungsstark, dominant.</td>\n","      <td>dur</td>\n","      <td>test_sentences</td>\n","    </tr>\n","    <tr>\n","      <th>8</th>\n","      <td>Ich bin eine geborene Führungsperson.</td>\n","      <td>dur</td>\n","      <td>test_sentences</td>\n","    </tr>\n","    <tr>\n","      <th>9</th>\n","      <td>Ich bin zögerlich, halte mich im Hintergrund.</td>\n","      <td>none</td>\n","      <td>test_sentences</td>\n","    </tr>\n","    <tr>\n","      <th>10</th>\n","      <td>Ich bin in Diskussionen unaufdringlich, zurück...</td>\n","      <td>none</td>\n","      <td>test_sentences</td>\n","    </tr>\n","    <tr>\n","      <th>11</th>\n","      <td>Ich bleibe lieber in der zweiten Reihe.</td>\n","      <td>none</td>\n","      <td>test_sentences</td>\n","    </tr>\n","    <tr>\n","      <th>12</th>\n","      <td>An Kolleginnen nervt mich nichts.</td>\n","      <td>none</td>\n","      <td>test_sentences</td>\n","    </tr>\n","    <tr>\n","      <th>13</th>\n","      <td>Ende April schloss er die Nutzung der nagelneu...</td>\n","      <td>none</td>\n","      <td>test_sentences</td>\n","    </tr>\n","    <tr>\n","      <th>14</th>\n","      <td>Aber es ist halt so, wir leben im Risiko und w...</td>\n","      <td>none</td>\n","      <td>test_sentences</td>\n","    </tr>\n","    <tr>\n","      <th>15</th>\n","      <td>Und dann fange ich an mit den weiteren Nutztie...</td>\n","      <td>none</td>\n","      <td>test_sentences</td>\n","    </tr>\n","    <tr>\n","      <th>16</th>\n","      <td>Und das war noch nicht mal so, Blunt.</td>\n","      <td>none</td>\n","      <td>test_sentences</td>\n","    </tr>\n","    <tr>\n","      <th>17</th>\n","      <td>Schaut man sich bei unseren europäischen Nachb...</td>\n","      <td>none</td>\n","      <td>test_sentences</td>\n","    </tr>\n","  </tbody>\n","</table>\n","</div>\n","    <div class=\"colab-df-buttons\">\n","\n","  <div class=\"colab-df-container\">\n","    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-0f3aa3ba-6f24-4d6a-900c-000d5c179434')\"\n","            title=\"Convert this dataframe to an interactive table.\"\n","            style=\"display:none;\">\n","\n","  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n","    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n","  </svg>\n","    </button>\n","\n","  <style>\n","    .colab-df-container {\n","      display:flex;\n","      gap: 12px;\n","    }\n","\n","    .colab-df-convert {\n","      background-color: #E8F0FE;\n","      border: none;\n","      border-radius: 50%;\n","      cursor: pointer;\n","      display: none;\n","      fill: #1967D2;\n","      height: 32px;\n","      padding: 0 0 0 0;\n","      width: 32px;\n","    }\n","\n","    .colab-df-convert:hover {\n","      background-color: #E2EBFA;\n","      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n","      fill: #174EA6;\n","    }\n","\n","    .colab-df-buttons div {\n","      margin-bottom: 4px;\n","    }\n","\n","    [theme=dark] .colab-df-convert {\n","      background-color: #3B4455;\n","      fill: #D2E3FC;\n","    }\n","\n","    [theme=dark] .colab-df-convert:hover {\n","      background-color: #434B5C;\n","      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n","      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n","      fill: #FFFFFF;\n","    }\n","  </style>\n","\n","    <script>\n","      const buttonEl =\n","        document.querySelector('#df-0f3aa3ba-6f24-4d6a-900c-000d5c179434 button.colab-df-convert');\n","      buttonEl.style.display =\n","        google.colab.kernel.accessAllowed ? 'block' : 'none';\n","\n","      async function convertToInteractive(key) {\n","        const element = document.querySelector('#df-0f3aa3ba-6f24-4d6a-900c-000d5c179434');\n","        const dataTable =\n","          await google.colab.kernel.invokeFunction('convertToInteractive',\n","                                                    [key], {});\n","        if (!dataTable) return;\n","\n","        const docLinkHtml = 'Like what you see? Visit the ' +\n","          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n","          + ' to learn more about interactive tables.';\n","        element.innerHTML = '';\n","        dataTable['output_type'] = 'display_data';\n","        await google.colab.output.renderOutput(dataTable, element);\n","        const docLink = document.createElement('div');\n","        docLink.innerHTML = docLinkHtml;\n","        element.appendChild(docLink);\n","      }\n","    </script>\n","  </div>\n","\n","\n","<div id=\"df-03c63b89-a4ea-4ea9-b075-61a9d97dbe3e\">\n","  <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-03c63b89-a4ea-4ea9-b075-61a9d97dbe3e')\"\n","            title=\"Suggest charts\"\n","            style=\"display:none;\">\n","\n","<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n","     width=\"24px\">\n","    <g>\n","        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n","    </g>\n","</svg>\n","  </button>\n","\n","<style>\n","  .colab-df-quickchart {\n","      --bg-color: #E8F0FE;\n","      --fill-color: #1967D2;\n","      --hover-bg-color: #E2EBFA;\n","      --hover-fill-color: #174EA6;\n","      --disabled-fill-color: #AAA;\n","      --disabled-bg-color: #DDD;\n","  }\n","\n","  [theme=dark] .colab-df-quickchart {\n","      --bg-color: #3B4455;\n","      --fill-color: #D2E3FC;\n","      --hover-bg-color: #434B5C;\n","      --hover-fill-color: #FFFFFF;\n","      --disabled-bg-color: #3B4455;\n","      --disabled-fill-color: #666;\n","  }\n","\n","  .colab-df-quickchart {\n","    background-color: var(--bg-color);\n","    border: none;\n","    border-radius: 50%;\n","    cursor: pointer;\n","    display: none;\n","    fill: var(--fill-color);\n","    height: 32px;\n","    padding: 0;\n","    width: 32px;\n","  }\n","\n","  .colab-df-quickchart:hover {\n","    background-color: var(--hover-bg-color);\n","    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n","    fill: var(--button-hover-fill-color);\n","  }\n","\n","  .colab-df-quickchart-complete:disabled,\n","  .colab-df-quickchart-complete:disabled:hover {\n","    background-color: var(--disabled-bg-color);\n","    fill: var(--disabled-fill-color);\n","    box-shadow: none;\n","  }\n","\n","  .colab-df-spinner {\n","    border: 2px solid var(--fill-color);\n","    border-color: transparent;\n","    border-bottom-color: var(--fill-color);\n","    animation:\n","      spin 1s steps(1) infinite;\n","  }\n","\n","  @keyframes spin {\n","    0% {\n","      border-color: transparent;\n","      border-bottom-color: var(--fill-color);\n","      border-left-color: var(--fill-color);\n","    }\n","    20% {\n","      border-color: transparent;\n","      border-left-color: var(--fill-color);\n","      border-top-color: var(--fill-color);\n","    }\n","    30% {\n","      border-color: transparent;\n","      border-left-color: var(--fill-color);\n","      border-top-color: var(--fill-color);\n","      border-right-color: var(--fill-color);\n","    }\n","    40% {\n","      border-color: transparent;\n","      border-right-color: var(--fill-color);\n","      border-top-color: var(--fill-color);\n","    }\n","    60% {\n","      border-color: transparent;\n","      border-right-color: var(--fill-color);\n","    }\n","    80% {\n","      border-color: transparent;\n","      border-right-color: var(--fill-color);\n","      border-bottom-color: var(--fill-color);\n","    }\n","    90% {\n","      border-color: transparent;\n","      border-bottom-color: var(--fill-color);\n","    }\n","  }\n","</style>\n","\n","  <script>\n","    async function quickchart(key) {\n","      const quickchartButtonEl =\n","        document.querySelector('#' + key + ' button');\n","      quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n","      quickchartButtonEl.classList.add('colab-df-spinner');\n","      try {\n","        const charts = await google.colab.kernel.invokeFunction(\n","            'suggestCharts', [key], {});\n","      } catch (error) {\n","        console.error('Error during call to suggestCharts:', error);\n","      }\n","      quickchartButtonEl.classList.remove('colab-df-spinner');\n","      quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n","    }\n","    (() => {\n","      let quickchartButtonEl =\n","        document.querySelector('#df-03c63b89-a4ea-4ea9-b075-61a9d97dbe3e button');\n","      quickchartButtonEl.style.display =\n","        google.colab.kernel.accessAllowed ? 'block' : 'none';\n","    })();\n","  </script>\n","</div>\n","\n","  <div id=\"id_3340a4d7-5843-4413-8f97-fd528efee953\">\n","    <style>\n","      .colab-df-generate {\n","        background-color: #E8F0FE;\n","        border: none;\n","        border-radius: 50%;\n","        cursor: pointer;\n","        display: none;\n","        fill: #1967D2;\n","        height: 32px;\n","        padding: 0 0 0 0;\n","        width: 32px;\n","      }\n","\n","      .colab-df-generate:hover {\n","        background-color: #E2EBFA;\n","        box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n","        fill: #174EA6;\n","      }\n","\n","      [theme=dark] .colab-df-generate {\n","        background-color: #3B4455;\n","        fill: #D2E3FC;\n","      }\n","\n","      [theme=dark] .colab-df-generate:hover {\n","        background-color: #434B5C;\n","        box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n","        filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n","        fill: #FFFFFF;\n","      }\n","    </style>\n","    <button class=\"colab-df-generate\" onclick=\"generateWithVariable('df')\"\n","            title=\"Generate code using this dataframe.\"\n","            style=\"display:none;\">\n","\n","  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n","       width=\"24px\">\n","    <path d=\"M7,19H8.4L18.45,9,17,7.55,7,17.6ZM5,21V16.75L18.45,3.32a2,2,0,0,1,2.83,0l1.4,1.43a1.91,1.91,0,0,1,.58,1.4,1.91,1.91,0,0,1-.58,1.4L9.25,21ZM18.45,9,17,7.55Zm-12,3A5.31,5.31,0,0,0,4.9,8.1,5.31,5.31,0,0,0,1,6.5,5.31,5.31,0,0,0,4.9,4.9,5.31,5.31,0,0,0,6.5,1,5.31,5.31,0,0,0,8.1,4.9,5.31,5.31,0,0,0,12,6.5,5.46,5.46,0,0,0,6.5,12Z\"/>\n","  </svg>\n","    </button>\n","    <script>\n","      (() => {\n","      const buttonEl =\n","        document.querySelector('#id_3340a4d7-5843-4413-8f97-fd528efee953 button.colab-df-generate');\n","      buttonEl.style.display =\n","        google.colab.kernel.accessAllowed ? 'block' : 'none';\n","\n","      buttonEl.onclick = () => {\n","        google.colab.notebook.generateWithVariable('df');\n","      }\n","      })();\n","    </script>\n","  </div>\n","\n","    </div>\n","  </div>\n"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"dataframe","variable_name":"df","summary":"{\n  \"name\": \"df\",\n  \"rows\": 18,\n  \"fields\": [\n    {\n      \"column\": \"text\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 18,\n        \"samples\": [\n          \"Ich bin einf\\u00fchlsam, zeige echtes Mitgef\\u00fchl.\",\n          \"Ich zeige Verst\\u00e4ndnis f\\u00fcr Bed\\u00fcrfnisse benachteiligter Menschen.\",\n          \"Ich bin eine geborene F\\u00fchrungsperson.\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"expected_label\",\n      \"properties\": {\n        \"dtype\": \"category\",\n        \"num_unique_values\": 3,\n        \"samples\": [\n          \"emp\",\n          \"none\",\n          \"dur\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"dataset\",\n      \"properties\": {\n        \"dtype\": \"category\",\n        \"num_unique_values\": 1,\n        \"samples\": [\n          \"test_sentences\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}"}},"metadata":{},"execution_count":35}]}],"metadata":{"accelerator":"GPU","colab":{"gpuType":"A100","machine_shape":"hm","provenance":[{"file_id":"1eklftmXpilv-bXTg2WNdWfD9pqieiEAM","timestamp":1729502199976},{"file_id":"https://github.com/lukasbirki/Workshop-Classification/blob/main/Course_Classification.ipynb","timestamp":1708594596582}],"toc_visible":true,"authorship_tag":"ABX9TyPxw7MUmqcNcISbqzRGHbQw"},"kernelspec":{"display_name":"Python 3","name":"python3"},"language_info":{"name":"python"},"widgets":{"application/vnd.jupyter.widget-state+json":{"7070002aba0b4afeb3905111e613b64b":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_7f24c86b3a2e4627a7e03ab0e1a6336d","IPY_MODEL_d7138bf3f6c34f939e6a8a752b8fc3b7","IPY_MODEL_17f56b1579884a268373aa5d75a490d0"],"layout":"IPY_MODEL_0b5b741594a0466a9d73cf8283ff1b4d"}},"7f24c86b3a2e4627a7e03ab0e1a6336d":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_15b4dc8f6d614364890c1730d992a5dc","placeholder":"​","style":"IPY_MODEL_5196a660739349e8a4c7b4552d2554a7","value":"Downloading builder script: 100%"}},"d7138bf3f6c34f939e6a8a752b8fc3b7":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_273049f6f020484eb7ca05f3c9920f16","max":6785,"min":0,"orientation":"horizontal","style":"IPY_MODEL_a98f526741804bccab47d4e59a3e081c","value":6785}},"17f56b1579884a268373aa5d75a490d0":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_f6a915b61dbb4ef482a5ab30a84a9617","placeholder":"​","style":"IPY_MODEL_4c258957c868436fb8968c3dd94c2a94","value":" 6.79k/6.79k [00:00&lt;00:00, 838kB/s]"}},"0b5b741594a0466a9d73cf8283ff1b4d":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"15b4dc8f6d614364890c1730d992a5dc":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"5196a660739349e8a4c7b4552d2554a7":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"273049f6f020484eb7ca05f3c9920f16":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"a98f526741804bccab47d4e59a3e081c":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"f6a915b61dbb4ef482a5ab30a84a9617":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"4c258957c868436fb8968c3dd94c2a94":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"0665f1ed464b4ee296808f10133b8748":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_d57802f5c43d49b481a451e9e9e8662f","IPY_MODEL_fa3e9e2e7f324d8ba044b4fc1d987a21","IPY_MODEL_3696eeefaed346db89c0a97ee484436e"],"layout":"IPY_MODEL_85a07ec1eb6a433abe600ab610fa4f1d"}},"d57802f5c43d49b481a451e9e9e8662f":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_cc99638ebf614514b21fb5fe9de74c74","placeholder":"​","style":"IPY_MODEL_fc44dae3b5bf4f0c90bcb4adfd4ae35d","value":"tokenizer_config.json: 100%"}},"fa3e9e2e7f324d8ba044b4fc1d987a21":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_399a2b3b9912441e90c2caf550b23d23","max":25,"min":0,"orientation":"horizontal","style":"IPY_MODEL_69c5c8db42334883bf22a8112ba8c24d","value":25}},"3696eeefaed346db89c0a97ee484436e":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_a75d55e7b46d493aa8f1a5b517924b5d","placeholder":"​","style":"IPY_MODEL_11ad864d7df64a7e897d8dd278c7dfe3","value":" 25.0/25.0 [00:00&lt;00:00, 3.12kB/s]"}},"85a07ec1eb6a433abe600ab610fa4f1d":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"cc99638ebf614514b21fb5fe9de74c74":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"fc44dae3b5bf4f0c90bcb4adfd4ae35d":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"399a2b3b9912441e90c2caf550b23d23":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"69c5c8db42334883bf22a8112ba8c24d":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"a75d55e7b46d493aa8f1a5b517924b5d":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"11ad864d7df64a7e897d8dd278c7dfe3":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"86c36e17ce3f481b97c3a96bfb92f64d":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_05089c2614944a8fb5f97733670e708e","IPY_MODEL_7990128df469444199cbeca50fd9b845","IPY_MODEL_e22bf0970d704e1a8d7d0e7ff116bdd3"],"layout":"IPY_MODEL_33f3d790826348488885c05d34d1701a"}},"05089c2614944a8fb5f97733670e708e":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_8cdf2e0a377d4d7b810cc13044a2b82e","placeholder":"​","style":"IPY_MODEL_de901ffbf7ae4679bbd7ab35442f0725","value":"config.json: 100%"}},"7990128df469444199cbeca50fd9b845":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_d368ea8fa5de438b886fff2db1d7bd27","max":615,"min":0,"orientation":"horizontal","style":"IPY_MODEL_5c4055c7bf864b4b88b2869ead22938e","value":615}},"e22bf0970d704e1a8d7d0e7ff116bdd3":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_a0b77437558445b4baf831c261c20725","placeholder":"​","style":"IPY_MODEL_5a919e654f3c4543966fe95defbf15c5","value":" 615/615 [00:00&lt;00:00, 79.0kB/s]"}},"33f3d790826348488885c05d34d1701a":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"8cdf2e0a377d4d7b810cc13044a2b82e":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"de901ffbf7ae4679bbd7ab35442f0725":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"d368ea8fa5de438b886fff2db1d7bd27":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"5c4055c7bf864b4b88b2869ead22938e":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"a0b77437558445b4baf831c261c20725":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"5a919e654f3c4543966fe95defbf15c5":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"fe2f852271f2423984a8e99b7e53e32e":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_f13121dfc5c9426db42626980b5b58c2","IPY_MODEL_475f7683d3254e18b28cf87624c920c1","IPY_MODEL_11a074858394455c9a3c2e27fdfa794b"],"layout":"IPY_MODEL_d5a836875d954cb7b9e3f31b98097ec8"}},"f13121dfc5c9426db42626980b5b58c2":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_2464b855e5af4581906bc24027c56920","placeholder":"​","style":"IPY_MODEL_7a068674cf9b4a4b8b23e1143d35c5f2","value":"sentencepiece.bpe.model: 100%"}},"475f7683d3254e18b28cf87624c920c1":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_f630f21ca35846f796a45db77d6fb271","max":5069051,"min":0,"orientation":"horizontal","style":"IPY_MODEL_0d95f5d1d4ea48319bf591b5d1709265","value":5069051}},"11a074858394455c9a3c2e27fdfa794b":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_1b44403205e243b493c909320e30359d","placeholder":"​","style":"IPY_MODEL_6c8a500f187e46968e833ce558d14f38","value":" 5.07M/5.07M [00:00&lt;00:00, 32.2MB/s]"}},"d5a836875d954cb7b9e3f31b98097ec8":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"2464b855e5af4581906bc24027c56920":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"7a068674cf9b4a4b8b23e1143d35c5f2":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"f630f21ca35846f796a45db77d6fb271":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"0d95f5d1d4ea48319bf591b5d1709265":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"1b44403205e243b493c909320e30359d":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"6c8a500f187e46968e833ce558d14f38":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"05e95285ca1f49439fb11c29af604b72":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_e7a55209b6da47958728ea7075bf6e4f","IPY_MODEL_de360fa3b8b34b3880398a6d5ece7a16","IPY_MODEL_10755139021b481fa58db946756585ce"],"layout":"IPY_MODEL_535612938f424be98b2779c891936e7d"}},"e7a55209b6da47958728ea7075bf6e4f":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_fe10c550e4814e448f656a9734d36b7f","placeholder":"​","style":"IPY_MODEL_9a54827d6741417c88c1bd55418eb483","value":"tokenizer.json: 100%"}},"de360fa3b8b34b3880398a6d5ece7a16":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_219884d8ff0a45d8803c2f882786c393","max":9096718,"min":0,"orientation":"horizontal","style":"IPY_MODEL_155605468de64565aeb9c5bf3767d0dd","value":9096718}},"10755139021b481fa58db946756585ce":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_be04db223d334502abe75ce26d619589","placeholder":"​","style":"IPY_MODEL_3c9fef23f30c440980ef388cf41ca15d","value":" 9.10M/9.10M [00:00&lt;00:00, 22.8MB/s]"}},"535612938f424be98b2779c891936e7d":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"fe10c550e4814e448f656a9734d36b7f":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"9a54827d6741417c88c1bd55418eb483":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"219884d8ff0a45d8803c2f882786c393":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"155605468de64565aeb9c5bf3767d0dd":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"be04db223d334502abe75ce26d619589":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"3c9fef23f30c440980ef388cf41ca15d":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}}}}},"nbformat":4,"nbformat_minor":0}